File:of Disk: Disks/MyPDP/m8-blue-rka1-rkb1
(Source file text)
P-1&XLISTX IFDEF FPP < /FPP PARAMETER TABLE LOCATIONS: DFLG, 0 /0 = F.P., 1 = D.P., -3 = E.P. ADRHI, 0 /UPPER 3 BITS OF ADRESSES BASHI, 0 XRHI, 0 PCHI, 0 PC, 0 /FPP PROGRAM COUNTER XRBASE, 0 /FPP INDEX REGISTER ARRAY ADDRESS BASADR, 0 /FPP BASE PAGE ADDRESS ADRLOW, 0 /FPP INSTRUCTION OPERAND ADDRESS ACX, 0 /EXP OF FAC ACSGN, 0 /SIGN OF FAC -1:NEG 0:ZERO +1:POS XRPNT, 0 /POINTER TO XR REG IN USE INDX, 0 /BITS 6-8 OF INSTRUCTION AUTO, 0 /BIT 5 OF INSTRUCTION / > PAGE XLIST -LRESMOD-1&XLISTX IFDEF KL8E2 <KL8XX=1> IFDEF KL8A1 <KL8XX=1> IFDEF KL8XX < /REENTRANT VERSION /DEFINITIONS OF OFFSETS !MUST BE IN THIS ORDER! NOPUNCH DOTF10=. *0 TTCHAR,. TTEVNT,. TTRET,. TTTLS,. TTSAV,. IFDEF KL8A1 < TTLINE,. > TTCOUNT,. TTFCHR,. TTFILL,. TTTMP,. TTBACK,. *DOTF10 ENPUNCH TT, SNA JMP TT3 /AC=0: TAKE IMMEDIATE EXIT DCA ZTEM1 JMS SETBASE /INITIALISE 'BASE' WITH POINTER TO TTY LIST TAD ZTEM1 DCA I BASE /STORE USERS AC IN TTCHAR TAD ZTEM1 AND C177 /STRIP PARITY TAD (-11 SNA /TAB ? JMP TTTAB /YES, GO EXPAND THE TAB CHARACTER IAC SZA CLA /BACKSPACE ? JMP TT0 /NO JMS GET /BACKUP POSITION COUNTER TTCOUNT TAD M1 DCA I X / JMS GET /YES GET ALTERNATE BACKSPACE TTBACK TT0, TAD ZTEM1 JMS TTOUT /NOT TAB, PRINT THE CHARACTER TT1, ISZ X /TTFCHR AFTER TTCOUNT TAD I X /GET MINUS THE FILLCHARACTER SNA /ANY FILLERS NEEDED ? JMP TT2 /NO TAD I BASE /GET THE USERS CHARACTER AND C177 /STRIP PARITY SNA CLA /FILLCHARACTERS NEEDED ? JMP TTFLL /YES, GO THERE TT2, TAD I BASE SMA CLA /EXIT OR RETURN ? JMP TT3 JMS MONITOR RETURN /TT3, JMS MONITOR /SEE AT KK2 / EXIT TTTAB, TAD C240 /EXPAND A TAB... JMS TTOUT /START WITH ONE SPACE TAD I X /JMS GET / TTCOUNT AND C7 /ARE WE AT TAB POSITION ? SZA CLA JMP TTTAB /NOT YET JMP TT1 /DONE TTFLL, ISZ X /TTFILL AFTER TTFCHR TAD I X /GET THE DESIRED FILLCOUNT ISZ X /TTTMP AFTER TTFILL SNA JMP TT2 /ZERO=NONE DCA I X /STORE IN TTTMP ACM1 JMS TTOUT /OUTPUT A RUBOUT ISZ X /TO TTFCHR ISZ X /TO TTFILL ISZ X /TO TTTMP TAD I X IAC JMP TTFLL+3 /SEE IF DONE TTOUT, 0 /SUBROUTINE TO OUTPUT ONE CHARACTER JMS PUT /SAVE THE CHARACTER TTSAV JMS GET TTEVNT /GET THE EVENT NUMBER DCA TTOUT1 ISZ X /TTRET AFTER TTEVNT TAD TTOUT /SAVE RETURNADDRESS IN TTYLIST DCA I X /IN TTRET TAD (-DGNTICK /ONE SECOND TIMEOUT KEEPS SYSTEM GOING JMS MONITOR WAIT TTOUT1, 0 JMS SETBASE /RELOAD BASE REGISTER JMS GET TTRET /FETCH RETURN ADDRESS DCA TTOUT ISZ X /TTTLS AFTER TTRET TAD I X /GET PROPPER TLS INSTRUCTION DCA TTOUT2 ISZ X /TTSAV AFTER TTTLS TAD I X /GET THE CHARACTER TO BE PRINTED IFDEF KL8A1 < ISZ X /TTLINE AFTER TTSAV TAD I X /GET LINENUMBER^400 > ISZ X /POSITION TTCOUNT AFTER TTLINE TTOUT2, HLT /WILL BECOME A TLS AND C177 TAD (-40 SMA /CONTROL-CHAR ? ISZ I X /NO, COUNT IT NOP TAD (40-12 SZA /WAS IT LINEFEED ? TAD M3 /(12-15 SNA CLA /WAS IT CR ? DCA I X /YES, RESET POSITION COUNTER JMP I TTOUT /RETURN WITH X AT TTCOUNT > IFNDEF KL8XX < /NON-REENTRANT VERSION- TT, SNA /AC=0 ? JMP TT3 /YES, EXIT ! DCA TTSAV TAD TTSAV DCA TTCHAR /SAVE THE USERS AC, WE'LL NEED IT TAD TTSAV AND C177 TAD (-11 SNA /TAB ? JMP TTTAB /YES, GO EXPAND IT IAC SZA CLA /BACKSPACE ? JMP TT0 /NOT BACKSPACE ACM1 /BACKSPACE, BACKUP POSITION COUNTER TAD TTCOUNT DCA TTCOUNT TAD TTBACK TT0, TAD TTSAV JMS TTOUT /OUTPUT THE CHARACTER TT1, TAD TTFCHR SNA /ANY FILLERS NEEDED ? JMP TT2 /NO TAD TTCHAR /COMPARE WITH CURRENT CHARACTER AND C177 /DON'T CONSIDER PARITY SNA CLA /FILLERS NEEDED ? JMP TTFLL /MUST SUPPLY FILLERS TT2, TAD TTCHAR SMA CLA /EXIT OR RETURN ? JMP TT3 JMS MONITOR RETURN TT3, JMS MONITOR EXIT TTTAB, TAD C240 /EXPAND A TAB ... JMS TTOUT /OUTPUT A SPACE TAD TTCOUNT AND C7 SZA CLA /ARE WE AT A TAB-STOP ? JMP TTTAB /NOT YET JMP TT1 /DONE TTFLL, TAD TTFILL /GET DISIRED NUMBER OF FILL CHAR'S DCA TTTMP JMS TTOUT /OUTPUT A NULL ISZ TTTMP JMP .-2 /MORE JMP TT2 /DONE TTOUT, 0 /SINGLE CHARACTER OUTPUT ROUTINE DCA TTSAV TAD (-DGNTICK /ONE SECOND TIMEOUT KEEPS TERMINAL GOING JMS MONITOR WAIT TTY1 CLA CLL TAD TTSAV TLS /THERE GOES THE CHARACTER AND C177 /STRIP PARITY BIT TAD (-40 /CODE .LT.240 ? SMA JMP TTOU1 /NO, PRINTING CHARACTER TAD (40-12 SZA /LINEFEED ? TAD M3 /(12-15 SZA CLA /WAS IT CR ? JMP I TTOUT /NO, DON'T COUNT NON-PRINTING CHARS JMP .+4 /YES, RESET POSITION COUNTER TTOU1, CLA / TAD TTCOUNT / IAC /INCREMENT POSITION COUNTER DCA TTCOUNT JMP I TTOUT /DONE TTSAV, 0 /THE CHARACTER THAT WILL GO OUT TTCHAR, 0 /THE CHARACTER WE GOT FROM THE CALLER TTCOUNT,0 /THE CURRENT POSITION TTBACK, T1BACK-210 TTFCHR, -T1CHAR /MINUS CHARACTER THAT NEEDS FILLERS TTFILL, -T1FILL /THE NUMBER OF FILLERS TO BE SUPPLIED TTTMP, 0 /A TEMPORARY, END OF NONREENTRANT VERSION > XLIST -LRESMOD-1&XLISTX IFDEF KL8XX < /REENTRANT VERSION OF KK- /DEFINITION OF OFFSETS KKEVNT= 0 KKESCP= 1 KK, DCA ZTEM1 JMS SETBASE /INITIALISE BASE REGISTER TAD I BASE /GET SLOT NUMBER DCA .+4 TAD ZTEM1 /USE CALLERS AC AS TIMEOUT VALUE JMS MONITOR WAIT 0 /WILL BECOME PROPER SLOT NUMBER TAD M2 / SNA /TIMEOUT ? JMP KK2 /YES, EXIT WITH AC4000 TAD C2 / DCA ZTEM1 /NO, STORE THE CHARACTER JMS SETBASE /RELOAD BASE REGISTER ISZ BASE /LET BASE POINT TO ESCAPE CODE TAD I BASE /GET MINUS ESCAPE FOR THIS TERMINAL TAD ZTEM1 /AND COMPARE SNA CLA /EQUAL ? TAD (233 /YES, TRANSLATE TO TRUE ESCAPE SNA / TAD ZTEM1 /NO, FETCH ORIGINAL CHARACTER SKP KK2, AC4000 TT3, JMS MONITOR EXIT / END OF REENTRANT VERSION > IFNDEF KL8XX < /NON-REENTRANT VERSION OF KK KK, JMS MONITOR WAIT KB1 TAD M2 / SNA /TIMEOUT ? JMP KK2 /YES, TIMED OUT TAD C2 / DCA ZTEM1 /SAVE THE CHAR TAD KKESCP /GET MINUS ESCAPE FOR THIS TERMINAL TAD ZTEM1 /AND COMPARE SNA CLA /EQUAL ? TAD (233 /YES, TRANSLATE TO TRUE ESCAPE SNA / TAD ZTEM1 /NO, FETCH ORIGINAL CHARACTER SKP KK2, AC4000 JMS MONITOR EXIT /END OF NON-REENTRANT VERSION KKESCP, -T1ESCP /(MAY BE CHANGED BY CB TASK) > PAGE